package com.ruoyi.business.base.service.impl;

import com.ruoyi.business.base.domain.BaseArea;
import com.ruoyi.business.base.mapper.BaseAreaMapper;
import com.ruoyi.business.base.service.IBaseAreaService;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 地区公司信息 服务层处理
 * 
 * @author ruoyi
 */
@Service
public class BaseAreaServiceImpl implements IBaseAreaService
{
    @Autowired
    private BaseAreaMapper areaMapper;

    /**
     * 查询地区公司信息集合
     * 
     * @param area 地区公司信息
     * @return 地区公司信息集合
     */
    @Override
    public List<BaseArea> selectAreaList(BaseArea area)
    {
        return areaMapper.selectAreaList(area);
    }

    /**
     * 查询所有地区公司
     * 
     * @return 地区公司列表
     */
    @Override
    public List<BaseArea> selectAreaAll()
    {
        return areaMapper.selectAreaAll();
    }

    /**
     * 通过地区公司ID查询地区公司信息
     * 
     * @param areaId 地区公司ID
     * @return 角色对象信息
     */
    @Override
    public BaseArea selectAreaById(Long areaId)
    {
        return areaMapper.selectAreaById(areaId);
    }

    /**
     * 根据用户ID获取地区公司选择框列表
     * 
     * @param userId 用户ID
     * @return 选中地区公司ID列表
     */
    @Override
    public List<Long> selectAreaListByUserId(Long userId)
    {
        return areaMapper.selectAreaListByUserId(userId);
    }

    /**
     * 校验地区公司名称是否唯一
     * 
     * @param area 地区公司信息
     * @return 结果
     */
    @Override
    public boolean checkAreaNameUnique(BaseArea area)
    {
        Long areaId = StringUtils.isNull(area.getAreaId()) ? -1L : area.getAreaId();
        BaseArea info = areaMapper.checkAreaNameUnique(area.getAreaName());
        if (StringUtils.isNotNull(info) && info.getAreaId().longValue() != areaId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 校验地区公司编码是否唯一
     * 
     * @param area 地区公司信息
     * @return 结果
     */
    @Override
    public boolean checkAreaCodeUnique(BaseArea area)
    {
        Long areaId = StringUtils.isNull(area.getAreaId()) ? -1L : area.getAreaId();
        BaseArea info = areaMapper.checkAreaCodeUnique(area.getAreaCode());
        if (StringUtils.isNotNull(info) && info.getAreaId().longValue() != areaId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }


    /**
     * 删除地区公司信息
     * 
     * @param areaId 地区公司ID
     * @return 结果
     */
    @Override
    public int deleteAreaById(Long areaId)
    {
        return areaMapper.deleteAreaById(areaId);
    }

    /**
     * 批量删除地区公司信息
     * 
     * @param areaIds 需要删除的地区公司ID
     * @return 结果
     */
    @Override
    public int deleteAreaByIds(Long[] areaIds)
    {
        return areaMapper.deleteAreaByIds(areaIds);
    }

    /**
     * 新增保存地区公司信息
     * 
     * @param area 地区公司信息
     * @return 结果
     */
    @Override
    public int insertArea(BaseArea area)
    {
        return areaMapper.insertArea(area);
    }

    /**
     * 修改保存地区公司信息
     * 
     * @param area 地区公司信息
     * @return 结果
     */
    @Override
    public int updateArea(BaseArea area)
    {
        return areaMapper.updateArea(area);
    }
}
